package com.topgay.dao;

import java.util.HashMap;
import java.util.List;

import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.topgay.domain.ComBoard;
import com.topgay.util.BoardUtilities;

@Repository
public class ComBoardDAOlmpl implements ComBoardDAO{
   
	
	@Autowired
	private SqlSessionTemplate session;
	
	
	private String makeSqlId(String id){
		return "comboard."+id;
	}
	//board 테이블에 새 게시물 하나 insert
	
	public int insertContentForNewCount(ComBoard comBoard){
		System.out.println("[insertContentForNewCount]comBoard="+comBoard);
	 	return session.insert(makeSqlId("insertContentForNewCount"), comBoard);
	}
     
//	board 테이블에 답변글 하나 insert 처리
	@Override
	public int insertContentForReply(ComBoard comBoard){
		System.out.println("[insertContentForReply]comBoard="+comBoard);
		return session.insert(makeSqlId("insertContentForReply"), comBoard);
	}
	
	
//	매개변수로 받은 페이지에 보여줄 글 목록 조회
	@Override
	public List<ComBoard> selectComBoardList(int page) {
	
		HashMap map = new HashMap();
		map.put("contentPerPage", BoardUtilities.CONTENT_PER_PAGE);
		map.put("page", page);
		return session.selectList(makeSqlId("selectComBoardList"), map);
	}

    //	총 게시물의 개수를 조회하는 메소드
	@Override
	public int selectTotalContent() {
	
		return session.selectOne(makeSqlId("selectTotalContent"));
	}
  
   //	조회수를 1개 증가시키는 메소드 (글 조회시 호출)
	@Override
	public int updateViewCount(int no) {
		
		return session.update(makeSqlId("updateViewCount"), no);
	}
  
	 
	//	글번호로 하나의 게시물을 조회하는 메소드
	@Override
	public ComBoard selectContentByNO(int no) {
		
		return session.selectOne(makeSqlId("selectContentByNO"), no);
	}

	
	//	게시물 정보를 삭제하는 메소드
	@Override
	public int deleteContentByNO(int no) {
	
		return session.delete(makeSqlId("deleteContentByNO"), no);
	}

	
	//	매개변수로 받은 refamily와 같은 refamily이고 매개변수로 
	//  받은 restep 보다 큰 restep을 가진 게시물들의 restep값을 1씩 증가 처리하는 메소드.
	@Override
	public int updateRestep(int refamily, int restep) {
		
		HashMap<String, Integer> map = new HashMap<String, Integer>();
		map.put("refamily", refamily);
		map.put("restep", restep);
		return session.update(makeSqlId("updateRestep"), map);
	}
	
   //	게시물 정보를 수정하는 메소드
	@Override
	public int updateContent(ComBoard comBoard) {
		
		return session.update(makeSqlId("updateContent"), comBoard);
	}
	
	
//	mypage게시물 정보를 수정하는 메소드
	@Override
	public int updateContent2(ComBoard comBoard) {
		
		return session.update(makeSqlId("updateContent"), comBoard);
	}

	//mypageing 리스트 조회 메소드
	@Override
	public List<ComBoard> selectComMyList(int page, String id){
		
		HashMap map = new HashMap();
		map.put("contentPerPage", BoardUtilities.CONTENT_PER_PAGE);
		map.put("page", page);
		map.put("id", id);
		
		
		return session.selectList(makeSqlId("selectComMyList"), map);
	}
  

	
	
	
	
	
}
